/**
 * @author 余鹏龙
 * @version 1.0
 */
//构造器使用细节

public class test_243 {
    public static void main(String[] args) {
        //5.在创建对象时，系统自动的调用该类的构造方法
        Person01 p1 = new Person01("king",40);
        Person01 p2 = new Person01("tom");
        //p1.Person();  error  不可以直接调用，应用系统自动调用该类的构造方法（成员方法可以）

        Dog dog1 = new Dog();
        //这就是为什么：没有写构造器时，创建对象是这么写的 new Dog() => 这里的小括号，会去调用默认的无参构造器

        System.out.println(p1.name+p1.age);
        System.out.println(p2.name);
    }
}

class Dog{

}

class Dog01 {
    //如果程序员没有定义构造器，系统会自动给类生成一个默认无参构造器（也叫默认构造器）
    //使用javap指令  反编译看看
    /*
        默认构造器
        Dog() {

        }
     */
}

class Person01 {
    String name;
    int age;    //默认0

    //第1个构造器
    //2.构造器没有返回值
    //3.构造器是完成对象的初始化，并不是创建对象
    public Person01(String pName,int pAge) {
        name = pName;
        age = pAge;
    }

    //1.一个类可以定义多个不同的构造器，即构造器重载
    //4.构造器名和类名要相同
    //比如：第2个构造器，只指定人名，不需要指定年龄
    public Person01(String pName) {
        name = pName;
    }
}